home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / sbin / dpkg-preconfigure < prev    next >
Text File  |  2009-10-02  |  3KB  |  148 lines

  1. #!/usr/bin/perl -w
  2. # This file was preprocessed, do not edit!
  3.  
  4.  
  5.  
  6. BEGIN {
  7.     eval qq{
  8.         use strict;
  9.         use FileHandle;
  10.         use Debconf::Log qw(:all);
  11.         use Debconf::Db;
  12.         use Debconf::Template;
  13.         use Debconf::Config;
  14.         use Debconf::AutoSelect qw(:all);
  15.         use Debconf::Gettext;
  16.     };
  17.     if ($@) {
  18.         print STDERR "debconf: Perl may be unconfigured ($@) -- aborting\n";
  19.         exit 0;
  20.     }
  21. }
  22.  
  23. Debconf::Db->load;
  24.  
  25. my $apt=0;
  26. Debconf::Config->getopt(
  27. qq{Usage: dpkg-preconfigure [options] [debs]
  28.        --apt            Apt mode.},
  29.     "apt"            => \$apt,
  30. );
  31.  
  32. $|=1;
  33.  
  34. my @debs=@ARGV;
  35. @ARGV=();
  36.  
  37. my $have_tty=1;
  38.  
  39. if ($apt) {
  40.     while (<>) {
  41.         chomp;
  42.         push @debs, $_ if length $_;
  43.     }
  44.     
  45.     exit unless @debs;
  46.     
  47.     $have_tty=0 unless open (STDIN, "/dev/tty");
  48. }
  49. elsif (! @debs) {
  50.     print STDERR sprintf("dpkg-preconfigure: ".gettext("must specify some debs to preconfigure")), "\n";
  51.     exit(1);
  52. }
  53.  
  54. if (! -x "/usr/bin/apt-extracttemplates") {
  55.     warn gettext("delaying package configuration, since apt-utils is not installed");
  56.     exit;
  57. }
  58.  
  59. my $frontend=make_frontend();
  60.  
  61. if (! $have_tty && $frontend->need_tty) {
  62.     print STDERR sprintf("dpkg-preconfigure: ".gettext("unable to re-open stdin: %s"), $!)."\n";
  63.     exit 0;
  64. }
  65.  
  66. my ($package, $version, $template, $config);
  67. unless (open(INFO, "-|")) {
  68.     my $command_max=20000; # LINUX SPECIFIC!!
  69.     my $static_len=length("apt-extracttemplates");
  70.     my $len=$static_len;
  71.     my @collect;
  72.     if ($apt && @debs > 30) {
  73.         STDERR->autoflush(1);
  74.     }
  75.     foreach my $deb (@debs) {
  76.         $len += length($deb) + 1;
  77.         if ($len < $command_max && @collect < 30) {
  78.             push @collect, $deb;
  79.         }
  80.         else {
  81.             if (system("apt-extracttemplates", @collect) != 0) {
  82.                 print STDERR sprintf("debconf: ".gettext("apt-extracttemplates failed: %s")."\n",$!);
  83.             }
  84.             if ($apt && @debs > 30) {
  85.                 $progress += @collect;
  86.                 printf STDERR "\r".gettext("Extracting templates from packages: %d%%"), $progress * 100 / @debs;
  87.             }
  88.                 
  89.             @collect=($deb);
  90.             $len=$static_len + length($deb) + 1;
  91.         }
  92.     }
  93.     if (system("apt-extracttemplates", @collect) != 0) {
  94.         print STDERR sprintf("debconf: ".gettext("apt-extracttemplates failed: %s")."\n",$!);
  95.     }
  96.     if ($apt && @debs > 30) {
  97.         $progress += @collect;
  98.         printf STDERR "\r".gettext("Extracting templates from packages: %d%%")."\n", $progress * 100 / @debs;
  99.     }
  100.     exit;
  101. }
  102. my @buffer=<INFO>;
  103. if ($apt && @buffer) {
  104.     print gettext("Preconfiguring packages ...\n");
  105. }
  106. foreach my $line (@buffer) {
  107.     ($package, $version, $template, $config)=split /\s/, $line;
  108.     
  109.     if (defined $template && length $template) {
  110.         eval q{
  111.             Debconf::Template->load($template, $package)
  112.         };
  113.         unlink $template;
  114.         if ($@) {
  115.             print STDERR "$package ".sprintf(gettext("template parse error: %s"), $@)."\n";
  116.             unlink $config;
  117.             next;
  118.         }
  119.     }
  120. }
  121.  
  122. foreach my $line (@buffer) {
  123.     ($package, $version, $template, $config)=split /\s/, $line;
  124.  
  125.     if (defined $config && length $config && -e $config) {
  126.         debug user => sprintf("preconfiguring %s (%s)",$package,$version);
  127.         chmod(0755, $config) or
  128.             die sprintf(gettext("debconf: can't chmod: %s"), $!);
  129.         $frontend->default_title($package);
  130.         $frontend->info(undef);
  131.         my $confmodule=make_confmodule($config, 'configure', $version);
  132.         $confmodule->owner($package);
  133.         1 while ($confmodule->communicate);
  134.         if ($confmodule->exitcode > 0) {
  135.             print STDERR sprintf(
  136.                 gettext("%s failed to preconfigure, with exit status %s"),
  137.                 $package, $confmodule->exitcode)."\n";
  138.         }
  139.         unlink $config;
  140.     }
  141. }
  142.  
  143. $frontend->shutdown;
  144.  
  145. Debconf::Db->save;
  146.  
  147.  
  148.